package orz.itrip.biz.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import orz.itrip.DtoUtils;
import orz.itrip.biz.service.UserInfoService;
import orz.itrip.dto.Dto;
import orz.itrip.mapper.UserLinkUserMapper;
import orz.itrip.pojo.UserLinkUser;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@Service
@Transactional
public class UserInfoServiceImpl implements UserInfoService {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @Resource
    private UserLinkUserMapper userLinkUserMapper;
    @Override
    public Dto queryuserlinkuser(UserLinkUser userLinkUser) {
//        PageHelper.startPage(0,10);
        List<UserLinkUser> userLinkUsers = null;
        if (!StringUtils.isEmpty(userLinkUser.getLinkUserName())){
            userLinkUsers = userLinkUserMapper.selectLike(userLinkUser.getLinkUserName());
        }else {
            userLinkUsers = userLinkUserMapper.selectAll();
        }
        return DtoUtils.getSuccesWithData(userLinkUsers,"获取常用联系人信息成功");
    }

    @Override
    public Dto adduserlinkuser(UserLinkUser userLinkUser,String token) {
        JSONObject jsonObject = JSON.parseObject(stringRedisTemplate.opsForValue().get(token));
        userLinkUser.setUserId(jsonObject.getInteger("id"));
        userLinkUser.setCreatedBy(jsonObject.getLong("id"));
        userLinkUser.setModifiedBy(jsonObject.getLong("id"));
        userLinkUser.setCreationDate(new Date());
        userLinkUser.setModifyDate(new Date());
        userLinkUser.setLinkIdCardType(0);
        if (!StringUtils.isEmpty(userLinkUser.getLinkUserName())&&!StringUtils.isEmpty(userLinkUser.getLinkIdCard())&&!StringUtils.isEmpty(userLinkUser.getLinkPhone())){
            if (!(userLinkUserMapper.insert(userLinkUser)<=0)){
                return DtoUtils.getSuccessDto("新增常用联系人成功");
            }
        }
        return DtoUtils.getFalseDto("新增常用联系人失败","20001");
    }

    @Override
    public Dto modifyuserlinkuser(UserLinkUser userLinkUser,String token) {
        JSONObject jsonObject = JSON.parseObject(stringRedisTemplate.opsForValue().get(token));
        userLinkUser.setModifiedBy(jsonObject.getLong("id"));
        userLinkUser.setModifyDate(new Date());
        userLinkUser.setLinkIdCardType(0);
        if (!StringUtils.isEmpty(userLinkUser.getLinkUserName())&&!StringUtils.isEmpty(userLinkUser.getLinkIdCard())&&!StringUtils.isEmpty(userLinkUser.getLinkPhone())){
            if (!(userLinkUserMapper.updateByPrimaryKeySelective(userLinkUser)<=0)){
                return DtoUtils.getSuccessDto("修改常用联系人成功");
            }
        }
        return DtoUtils.getFalseDto("修改常用联系人失败","20002");
    }

    @Override
    public Dto deluserlinkuser(Long[] ids) {
        if (ids!=null){
            for (Long id:ids) {
                userLinkUserMapper.deleteByPrimaryKey(id);
            }
            return DtoUtils.getSuccessDto("删除常用联系人成功");
        }
        return DtoUtils.getFalseDto("删除常用联系人失败","20003");
    }
}
